#!/bin/sh

MAX_COUNT=25
NEXT_FILE=""
NEXT_BAK=""
ERR_STRING=""
SA_VAR="/var/svcagent"
SA_HSC=$SA_VAR/hsc
SA_ERR=$SA_HSC/errdata

validate() {
  if [ "$file" == "" ]
  then
    usage
    exit 3
  fi
  [ -f $file ] || filenotfound 
}

usage () {
  echo " usage: callsa [-r] -f file_name "
}

filenotfound () {
  echo $file Not Found. Please Use a Valid File Name.
  exit 4
}

init() {
  [ -d $SA_HSC ] || mkdir -p $SA_HSC
  [ -d $SA_ERR ] || /usr/svcagent/bin/callsa_errdata
}

next_file() {
  COUNT_FILE=$SA_ERR"/dat.cnt"
  FILE_PREFIX=$SA_ERR"/error"
  FILE_SUFFIX=".dat"
  nc=`cat $COUNT_FILE 2>/dev/null`
  if [ -n "$nc" ]
  then
    if [ $nc -gt $MAX_COUNT ]
    then
      nc=1
    fi
  else
    let nc=1
  fi

  NEXT_FILE=$FILE_PREFIX$nc$FILE_SUFFIX
  NEXT_BAK=$FILE_PREFIX$nc.bak
  let nc=$nc+1
  echo $nc >$COUNT_FILE
  chmod 666 $COUNT_FILE >/dev/null 2>&1
}

create_err_string() {

  if [ "$file" != "" ]
  then
    cat_file
  else
    echo " No Files "
    usage
    exit 3
  fi
  cp $NEXT_BAK $NEXT_FILE
  if [ $? != 0 ]
  then
    rm -f $NEXT_BAK 
    exit 5
  fi
  chmod 666 $NEXT_FILE >/dev/null 2>&1
  rm -f $NEXT_BAK 
  if [ "$remove" != "N" ]
  then
    rm -f $file
  fi
}

cat_file() {
  [ -f $file ] || filenotfound
  cat $file >$NEXT_BAK
  if [ $? != 0 ]
  then
    exit 6
  fi
}

# MAIN ----------------------------------------------------------

file=""
remove="Y"

while getopts "rf:" flgs
do
  case "$flgs" in
    r)	
	remove="N"
	;;
    f)
	file=$OPTARG
	;;
   \?)
        usage
        ;;
    *)
        usage
        ;;

  esac
done

init
validate
next_file

#echo "Creating  " $NEXT_FILE
create_err_string

